{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "63ab5e89",
   "metadata": {},
   "source": [
    "## Cookbook for using Azure OpenAI with Embedchain"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e32a0265",
   "metadata": {},
   "source": [
    "### Step-1: Install embedchain package"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b80ff15a",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install embedchain"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac982a56",
   "metadata": {},
   "source": [
    "### Step-2: Set AWS related environment variables\n",
    "\n",
    "You can find these env variables on your AWS Management Console."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "e0a36133",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "os.environ[\"AWS_ACCESS_KEY_ID\"] = \"AKIAIOSFODNN7EXAMPLE\" # replace with your AWS_ACCESS_KEY_ID\n",
    "os.environ[\"AWS_SECRET_ACCESS_KEY\"] = \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\" # replace with your AWS_SECRET_ACCESS_KEY\n",
    "os.environ[\"AWS_SESSION_TOKEN\"] = \"IQoJb3JpZ2luX2VjEJr...==\" # replace with your AWS_SESSION_TOKEN\n",
    "os.environ[\"AWS_DEFAULT_REGION\"] = \"us-east-1\" # replace with your AWS_DEFAULT_REGION\n",
    "\n",
    "from embedchain import App\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d7b554e",
   "metadata": {},
   "source": [
    "### Step-3: Define your llm and embedding model config\n",
    "\n",
    "May need to install langchain-anthropic to try with claude models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b9f52fc5",
   "metadata": {},
   "outputs": [],
   "source": [
    "config = \"\"\"\n",
    "llm:\n",
    "  provider: aws_bedrock\n",
    "  config:\n",
    "    model: 'amazon.titan-text-express-v1'\n",
    "    deployment_name: ec_titan_express_v1\n",
    "    temperature: 0.5\n",
    "    max_tokens: 1000\n",
    "    top_p: 1\n",
    "    stream: false\n",
    "\n",
    "embedder:\n",
    "  provider: aws_bedrock\n",
    "  config:\n",
    "    model: amazon.titan-embed-text-v2:0\n",
    "    deployment_name: ec_embeddings_titan_v2\n",
    "\"\"\"\n",
    "\n",
    "# Write the multi-line string to a YAML file\n",
    "with open('aws_bedrock.yaml', 'w') as file:\n",
    "    file.write(config)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98a11130",
   "metadata": {},
   "source": [
    "### Step-4 Create two embedchain apps based on the config"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1ee9bdd9",
   "metadata": {},
   "outputs": [],
   "source": [
    "app = App.from_config(config_path=\"aws_bedrock.yaml\")\n",
    "app.reset() # Reset the app to clear the cache and start fresh"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "554dc97b",
   "metadata": {},
   "source": [
    "### Step-5: Add a data source to unrelated to the question you are asking"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "686ae765",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Inserting batches in chromadb: 100%|██████████| 1/1 [00:01<00:00,  1.62s/it]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'81b4936ef6f24974235a56acc1913c46'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "app.add(\"https://www.lipsum.com/\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ccc7d421",
   "metadata": {},
   "source": [
    "### Step-6: Notice the underlying context changing with the updated data source"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "27868a7d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Context: 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet.\", comes from a line in section 1.10.32.The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham. Where can I get some? There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. Donate: If you use this site regularly and would like to help keep the site on the Internet, please consider donating a small sum to help pay for the hosting and bandwidth bill. There is no minimum donation, any sum is appreciated - click here to donate using PayPal. Thank you for your support. Donate bitcoin: Lorem Ipsum - All the facts - Lipsum generator Հայերեն Shqip ‫العربية Български Català 中文简体 Hrvatski Česky Dansk Nederlands English Eesti Filipino Suomi Français ქართული Deutsch Ελληνικά ‫עברית हिन्दी Magyar Indonesia Italiano Latviski Lietuviškai македонски Melayu Norsk Polski Português Româna Pyccкий Српски Slovenčina Slovenščina Español Svenska ไทย Türkçe Українська Tiếng Việt Lorem Ipsum \"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.\" \"There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain.\" What is Lorem Ipsum? Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). Where does it come from? Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 16UQLq1HZ3CNwhvgrarV6pMoA2CDjb4tyF Translations: Can you help translate this site into a foreign language ? Please email us with details if you can help. There is a set of mock banners available here in three colours and in a range of standard banner sizes: NodeJS Python Interface GTK Lipsum Rails .NET The standard Lorem Ipsum passage, used since the 1500s\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\"Section 1.10.32 of \"de Finibus Bonorum et Malorum\", written by Cicero in 45 BC\"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?\" 1914 translation by H. Rackham \"But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Inserting batches in chromadb: 100%|██████████| 1/1 [00:01<00:00,  1.26s/it]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Context with updated memory: Elon Musk PROFILEElon MuskCEO, Tesla$234.1B$6.6B (2.73%)Real Time Net Worthas of 8/1/24Reflects change since 5 pm ET of prior trading day. 1 in the world todayPhoto by Martin Schoeller for ForbesAbout Elon MuskElon Musk cofounded six companies, including electric car maker Tesla, rocket producer SpaceX and tunneling startup Boring Company.He owns about 12% of Tesla excluding options, but has pledged more than half his shares as collateral for personal loans of up to $3.5 billion.In early 2024, a Delaware judge voided Musk's 2018 deal to receive options equaling an additional 9% of Tesla. Forbes has discounted the options by 50% pending Musk's appeal.SpaceX, founded in 2002, is worth nearly $180 billion after a December 2023 tender offer of up to $750 million; SpaceX stock has quintupled its value in four years.Musk bought Twitter in 2022 for $44 billion, after later trying to back out of the deal. He owns an estimated 74% of the company, now called X.Forbes estimates that Musk's stake in X is now worth nearly 70% less than he paid for it based on investor Fidelity's valuation of the company as of December 2023.Wealth HistoryHOVER TO REVEAL NET WORTH BY YEARForbes ListsThe Richest Person In Every State (2024) 2Billionaires (2024) 1Forbes 400 (2023) 1Innovative Leaders (2019) 25Powerful People (2018) 12Richest In Tech (2017)Global Game Changers (2016)More ListsPersonal StatsAge53Source of WealthTesla, SpaceX, Self MadeSelf-Made Score8Philanthropy Score1ResidenceAustin, TexasCitizenshipUnited StatesMarital StatusSingleChildren11EducationBachelor of Arts/Science, University of PennsylvaniaDid you knowMusk, who says he's worried about population collapse, has ten children with three women, including triplets and two sets of twins.As a kid in South Africa, Musk taught himself to code; he sold his first game, Blastar, for about $500.In Their Own WordsI operate on the physics approach to analysis. You boil things down to the first principles or fundamental truths in a particular area and then you reason up from there.Elon MuskRelated People & CompaniesReid HoffmanView ProfileTeslaHolds stake in TeslaView ProfileUniversity of PennsylvaniaAttended the schoolView ProfilePeter ThielCofounderView ProfileRobyn DenholmRelated by employment: TeslaView ProfileLarry EllisonRelated by financial asset: TeslaView ProfileSee MoreSee LessMore on Forbes2 hours agoDon Lemon Sues Elon Musk After $1.5 Million-Per-Year X Deal Fell ApartDon Lemon sues Elon Musk for refusing to pay him after an exclusive deal with the reporter on X fell apart.ByKirk OgunrindeContributor17 hours agoElon Musk’s Experimental School In Texas Is Now Looking For StudentsCalled Ad Astra, Musk has said the school will focus on “making all the children go through the same grade at the same time, like an assembly line.”BySarah EmersonForbes StaffJul 31, 2024Elon Musk Isn't Stopping Misinformation, He's Helped Spread ItThough hardly the most egregious example of a manipulated video, it is the fact that X failed to flag it that has raised concerns.ByPeter SuciuContributorJul 30, 2024Elon Musk Suddenly Breaks His Silence On Bitcoin After Issuing A Shock U.S. Dollar ‘Destruction’ Warning That Could Trigger A Crypto Price BoomElon Musk, the billionaire chief executive of Tesla, has mostly steered clear of bitcoin and crypto comments following the bitcoin price crash in 2022.ByBilly BambroughSenior ContributorJul 30, 20245 Reasons Deep Fakes (And Elon Musk) Won’t Destroy DemocracyWe've been dealing with things like deep fakes and people like Musk since the dawn of time. Five basic 'shadow skills' are why democracy is not in danger.ByPia LauritzenContributorJul 27, 2024Grimes’ Mother Blasts Musk—Accuses Him Of Keeping Children From Their MotherThe mother of billionaire Elon Musk’s former partner, musician Grimes, claimed Musk is withholding his children from their mother.ByBrian BushardForbes StaffJul 24, 2024Elon Musk Attends Netanyahu’s Speech To Congress As His GuestNetanyahu is speaking to Congress about Israel’s war with Hamas.ByAntonio Pequeño IVForbes StaffJul 24, 2024Elon Musk’s Net Worth Falls $16 Billion As Tesla Stock TanksMusk remains the richest person on Earth even after losing the equivalent of the 113th-wealthiest person’s entire fortune in one morning. ByDerek SaulForbes StaffJul 24, 2024Elon Musk’s Endorsement Of Trump Could Be A Grave Mistake For TeslaThe billionaire's embrace of the anti-EV presidential candidate risks politicizing a brand that sells best in California and, based on market studies, with Democrats.ByAlan OhnsmanForbes StaffJul 23, 2024The Prompt: Elon Musk’s ‘Gigafactory Of Compute’ Is Running In MemphisPlus: Target’s AI chatbot for employees misses the mark. ByRashi ShrivastavaForbes StaffJul 22, 2024‘Fortnite’ Is Getting Elon Musk’s Tesla Cybertruck As A New Combat VehicleAccording to a new trailer just released today, Elon Musk’s beloved Tesla Cybertruck is being released in Fortnite ByPaul TassiSenior ContributorJul 22, 2024Elon Musk’s Mad Dash To Build A Power-Hungry AI SupercomputerIn this week's Current Climate newsletter, Elon Musk's mad dash to build a water- and power-hungry AI supercomputer, Vietnamese billionaire's VinFast delays U.S. factory, and biomass-based carbon removalByAmy FeldmanForbes StaffJul 19, 2024There Are 10,000 Active Satellites In Orbit. Most Belong To Elon MuskIt’s a milestone that showcases decades of technical achievement, but might also make it harder to sleep at night if you think about it for too long. ByEric MackSenior ContributorJul 17, 2024Inside Elon Musk’s Mad Dash To Build A Giant xAI Supercomputer In MemphisElon Musk is “hauling ass” on his supercomputer project in Memphis. But a whiplash deal, NDAs and backroom promises made to the city have lawmakers demanding answers.BySarah EmersonForbes StaffJul 16, 2024Elon Musk To Move X And SpaceX Headquarters To TexasUpset with a new California law protecting the rights of transgender children, Elon Musk is moving his two\n"
     ]
    }
   ],
   "source": [
    "question = \"Who is Elon Musk?\"\n",
    "context = \" \".join([a['context'] for a in app.search(question)])\n",
    "print(\"Context:\", context)\n",
    "app.add(\"https://www.forbes.com/profile/elon-musk\")\n",
    "context = \" \".join([a['context'] for a in app.search(question)])\n",
    "print(\"Context with updated memory:\", context)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c607570",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
